package sse

import (
	"encoding/base64"
	"gitee.com/kaylee595/gkaylee/kerr"
	"github.com/tidwall/gjson"
)

type Data []byte

func (d Data) Base64Decode() (string, error) {
	dst := make([]byte, base64.StdEncoding.DecodedLen(len(d)))
	n, err := base64.StdEncoding.Decode(dst, d)
	if err != nil {
		return "", kerr.WrapTraceStack(err)
	}
	return string(dst[:n]), nil
}

func (d Data) JSONPath(path string) gjson.Result {
	return gjson.GetBytes(d, path)
}

func (d Data) String() string {
	return string(d)
}

type Event struct {
	Id    []byte // 用于标识事件类型
	Event []byte // 事件 ID
	Data  Data   // 消息的数据字段
	Retry int64  // 重新连接的时间. 以毫秒为单位指定重新连接的时间.
}

func (e *Event) IdString() string {
	return string(e.Id)
}

func (e *Event) EventString() string {
	return string(e.Event)
}

func (e *Event) DataString() string {
	return e.Data.String()
}
